# print(aaa) # NameError: name 'aaa' is not defined
# 捕捉异常
dict_info = {"name":"suki","age":19}
# print(dict_info['address'])  # KeyError: 'address'
list1 = [10,20,30]
#        0  1  2
# print(list1[9])
"""
demo：
try:
    代码块。这里是写尝试捕捉异常
except:
    如果出现错误，则执行这里的代码
else:
    程序如果没有出现异常，则执行这里的代码块
finally:
    无论程序成功与否，都会执行这里
"""
"""
try:
    print(aaa)
except:
    print("老兄，代码报错了，你检查检查！")
else:
    print("代码运行无误！请放心！")
finally:
    print("代码运行结束")
"""
"""
老兄，代码报错了，你检查检查！
代码运行结束
"""
"""
try:
    print("suki")
except:
    print("代码报错")
else:
    print("tiki")
finally:
    print("运行结束")
"""
"""
suki
tiki
运行结束
"""
# 捕获指定的异常状态
"""
try:
    list1 = [10,20,30]
    print(list1[3])
except IndexError as E:     # 指定IndexError
    print(f"报错信息为：{E}")
else:
    print("程序无异常")
finally:
    print("程序执行结束")
"""
# 指定多个异常合并
"""
try:
    list1 = [10,20,30,40]
    print(list1[9])
except (IndexError,NameError) as e:     # 可以指定多种异常
    print(f"报错信息为：{e}")
else:
    print("程序无异常")
finally:
    print("程序执行结束")
"""
# 抛出异常 raise
# name = "小白"
# if name == '小白':
#     raise "代码执行错误"
def run(n):
    if n == '健身':
        raise "我还很瘦，不减肥"
    else:
        print("开始运动")
# run("健身")
# 断言
list3 = [10,20,30]
# assert 10 in list3          # 判断10是否在list3里，如果在里，不会有任何的提示。没在则报错
# assert "京东" in list3          # 判断京东是否在list3里，如果在里，不会有任何的提示。没在则报错
"""
判断可以有很多中：
in   是否在里
and   并且的关系
or   或者
>=   大于或等于
<=   小于等于
==  判断是否相等
is   判断地址值是否一致
"""
assert (10 and 20) in list3
assert (10 or 20) in list3
bb = 30
assert bb>=30
assert bb<=30
assert bb == 30
# assert bb is 30   # 会报错




"""
捕捉异常：
try:

:except

else

finally

主动抛出异常：
raise

断言：
assert

"""










